﻿//解决注册后HTMLDocumentEvents2_oncontextmenuEventHandler事件后Webbrowser内元素不可操作的bug

using System;
using mshtml;
using System.Runtime.InteropServices;

namespace Design
{
    /// <summary>
    /// WebBrowserDocument事件。
    /// </summary>        
    public delegate void DHTMLEvent(IHTMLEventObj e);

    /// <summary>
    /// WebBrowser事件处理类。
    /// </summary>        
    public class CHTMLEventHandler
    {

        /// <summary>
        /// DHTMLEvent事件。
        /// </summary>        
        public DHTMLEvent m_DHTMLEventHandler;

        /// <summary>
        /// HTMLDocument对象。
        /// </summary>        
        private HTMLDocument m_Document;

        /// <summary>
        /// 构造函数。
        /// </summary>        
        public CHTMLEventHandler(HTMLDocument doc)
        {
            m_Document = doc;
        }

        /// <summary>
        /// DispId不能省略，它是Com自动化的重要步骤，所以，当事件触发后，就会
        /// 自动调用该函数。
        /// </summary>        
        [DispId(0)]
        public void FireEvent()
        {
            m_DHTMLEventHandler(m_Document.parentWindow.@event);
        }
    }
}
